/*
 * © 2021 Thoughtworks, Inc.
 */

import {
  COMPUTE_PROCESSOR_TYPES,
  cascadeLakeSkylakeBroadwellHaswell,
  cascadeLakeSkylake,
  cascadeLakeSkylakeBroadwell,
  cascadeLakeHaswell,
} from '@cloud-carbon-footprint/core'

export const VIRTUAL_MACHINE_TYPE_SERIES_MAPPING: {
  [series: string]: { [instanceType: string]: number[] } // [vcpus, memory, embodied emissions]
} = {
  'As-series': {
    A0: [1, 0.75],
    A1: [1, 1.75],
    A2: [2, 3.5],
    A3: [4, 7],
    A4: [8, 14],
  },
  'Bs-series': {
    B1Ls: [1, 0.5, 1.2388],
    B1s: [1, 1, 1.2388],
    B1Ms: [1, 2, 1.2388],
    B2s: [2, 4, 1.2388],
    B2ms: [2, 8, 1.2388],
    B4ms: [4, 16, 1.2388],
    B8ms: [8, 32, 1.2388],
    B12ms: [12, 48, 1.2388],
    B16ms: [16, 64, 1.2388],
    B20ms: [20, 80, 1.2388],
  },
  'Av2 Standard': {
    'A1 v2': [1, 2, 1.2166],
    'A2 v2': [2, 4, 1.2166],
    'A2m v2': [2, 16, 1.2166],
    'A4 v2': [4, 8, 1.2166],
    'A4m v2': [4, 32, 1.2166],
    'A8 v2': [8, 16, 1.2166],
    'A8m v2': [8, 64, 1.2166],
  },
  'D2a – D96a v4': {
    'D2a v4': [2, 8, 1.5604],
    'D4a v4': [4, 16, 1.5604],
    'D8a v4': [8, 32, 1.5604],
    'D16a v4': [16, 64, 1.5604],
    'D32a v4': [32, 128, 1.5604],
    'D48a v4': [48, 192, 1.5604],
    'D64a v4': [64, 256, 1.5604],
    'D96a v4': [96, 384, 1.5604],
  },
  'D2as – D96as v4': {
    'D2as v4': [2, 8, 1.5604],
    'D4as v4': [4, 16, 1.5604],
    'D8as v4': [8, 32, 1.5604],
    'D16as v4': [16, 64, 1.5604],
    'D32as v4': [32, 128, 1.5604],
    'D48as v4': [48, 192, 1.5604],
    'D64as v4': [64, 256, 1.5604],
    'D96as v4': [96, 384, 1.5604],
  },
  'D2d – D64d v4': {
    'D2d v4': [2, 8, 1.4829],
    'D4d v4': [4, 16, 1.4829],
    'D8d v4': [8, 32, 1.4829],
    'D16d v4': [16, 64, 1.4829],
    'D32d v4': [32, 128, 1.4829],
    'D48d v4': [48, 192, 1.4829],
    'D64d v4': [64, 256, 1.4829],
  },
  'D2ds – D64ds v4': {
    'D2ds v4': [2, 8, 1.5329],
    'D4ds v4': [4, 16, 1.5329],
    'D8ds v4': [8, 32, 1.5329],
    'D16ds v4': [16, 64, 1.5329],
    'D32ds v4': [32, 128, 1.5329],
    'D48ds v4': [48, 192, 1.5329],
    'D64ds v4': [64, 256, 1.5329],
  },
  'D2 – D64 v4': {
    'D2 v4': [2, 8, 1.4329],
    'D4 v4': [4, 16, 1.4329],
    'D8 v4': [8, 32, 1.4329],
    'D16 v4': [16, 64, 1.4329],
    'D32 v4': [32, 128, 1.4329],
    'D48 v4': [48, 192, 1.4329],
    'D64 v4': [64, 256, 1.4329],
  },
  'D2s – D64s v4': {
    'D2s v4': [2, 8, 1.4329],
    'D4s v4': [4, 16, 1.4329],
    'D8s v4': [8, 32, 1.4329],
    'D16s v4': [16, 64, 1.5079],
    'D32s v4': [32, 128, 1.4329],
    'D48s v4': [48, 192, 1.4329],
    'D64s v4': [64, 256, 1.4329],
  },
  'D2-64 v3': {
    'D2 v3': [2, 8, 1.4829],
    'D4 v3': [4, 16, 1.4829],
    'D8 v3': [8, 32, 1.4829],
    'D16 v3': [16, 64, 1.4454],
    'D32 v3': [32, 128, 1.4829],
    'D48 v3': [48, 192, 1.4829],
    'D64 v3': [64, 256, 1.4829],
  },
  'D2s-64s v3': {
    'D2s v3': [2, 8, 1.4829],
    'D4s v3': [4, 16, 1.4829],
    'D8s v3': [8, 32, 1.4829],
    'D16s v3': [16, 64, 1.4454],
    'D32s v3': [32, 128, 1.4829],
    'D48s v3': [48, 192, 1.4829],
    'D64s v3': [64, 256, 1.4829],
  },
  'D1-5 v2': {
    'D1 v2': [1, 3.5, 1.9059],
    'D2 v2': [2, 7, 1.2055],
    'D3 v2': [4, 14, 1.2055],
    'D4 v2': [8, 28, 1.2055],
    'D5 v2': [16, 56, 1.2055],
  },
  'D1s-5s v2': {
    'Ds1 v2': [1, 3.5, 1.3054],
    'Ds2 v2': [2, 7, 1.2555],
    'Ds3 v2': [4, 14, 1.2555],
    'Ds4 v2': [8, 28, 1.2555],
    'Ds5 v2': [16, 56, 1.2555],
  },
  'DCsv2-series': {
    'DC1s v2': [1, 4, 1.1722],
    'DC2s v2': [2, 8, 1.1722],
    'DC4s v2': [4, 16, 1.1722],
    'DC8 v2': [8, 32, 1.1722],
  },
  'Fsv2-series': {
    'F2s v2': [2, 4, 1.3775],
    'F4s v2': [4, 8, 1.3775],
    'F8s v2': [8, 16, 1.5883],
    'F16s v2': [16, 32, 1.2999],
    'F32s v2': [32, 64, 1.3775],
    'F48s v2': [48, 96, 1.3775],
    'F64s v2': [64, 128, 1.3775],
    'F72s v2': [72, 144, 1.3775],
  },
  'F-series': {
    F1: [1, 2, 1.6383],
    F2: [2, 4, 1.2222],
    F4: [4, 8, 1.2222],
    F8: [8, 16, 1.2222],
    F16: [16, 32, 1.2222],
  },
  'Fs-Series': {
    F1s: [1, 2, 1.2222],
    F2s: [2, 4, 1.2222],
    F4s: [4, 8, 1.2222],
    F8s: [8, 16, 1.2222],
    F16s: [16, 32, 1.2222],
  },
  'E2a – E96a v4': {
    'E2a v4': [2, 16, 1.9598],
    'E4a v4': [4, 32, 1.9598],
    'E8a v4': [8, 64, 1.9598],
    'E16a v4': [16, 128, 1.9598],
    'E20a v4': [20, 160, 1.9598],
    'E32a v4': [32, 256, 1.9598],
    'E48a v4': [48, 384, 1.9598],
    'E64a v4': [64, 512, 1.9598],
    'E96a v4': [96, 672, 1.9598],
  },
  'E2as – E96as v4': {
    'E2as v4': [2, 16, 2.0098],
    'E4as v4': [4, 32, 2.0098],
    'E8as v4': [8, 64, 2.0098],
    'E16as v4': [16, 128, 2.0098],
    'E20as v4': [20, 160, 2.0098],
    'E32as v4': [32, 256, 2.0098],
    'E48as v4': [48, 384, 2.0098],
    'E64as v4': [64, 512, 2.0098],
    'E96as v4': [96, 672, 2.0098],
  },
  'E2 – E96 v5': {
    'E2 v5': [2, 16, 2.0098],
    'E4 v5': [4, 32, 2.0098],
    'E8 v5': [8, 64, 2.0098],
    'E16 v5': [16, 128, 2.0098],
    'E20 v5': [20, 160, 2.0098],
    'E32 v5': [32, 256, 2.0098],
    'E48 v5': [48, 384, 2.0098],
    'E64 v5': [64, 512, 2.0098],
    'E96 v5': [96, 672, 2.0098],
  },
  'E2d – E64d v4': {
    'E2d v4': [2, 16, 1.8768],
    'E4d v4': [4, 32, 1.8768],
    'E8d v4': [8, 64, 1.8768],
    'E16d v4': [16, 128, 1.8768],
    'E20d v4': [20, 160, 1.8768],
    'E32d v4': [32, 256, 1.8768],
    'E48d v4': [48, 384, 1.8768],
    'E64d v4': [64, 504, 1.8768],
  },
  'E2ds – E64ds v4': {
    'E2ds v4': [2, 16, 1.8768],
    'E4ds v4': [4, 32, 1.8768],
    'E8ds v4': [8, 64, 1.8768],
    'E16ds v4': [16, 128, 1.8768],
    'E20ds v4': [20, 160, 1.8768],
    'E32ds v4': [32, 256, 1.8768],
    'E48ds v4': [48, 384, 1.8768],
    'E64ds v4': [64, 504, 1.8768],
    'E80ids v4 1': [80, 504, 1.8768],
  },
  'E2 – E64 v4': {
    'E2 v4': [2, 16, 2.0098],
    'E4 v4': [4, 32, 2.0098],
    'E8 v4': [8, 64, 2.0098],
    'E16 v4': [16, 128, 2.0098],
    'E32 v4': [32, 256, 2.0098],
    'E48 v4': [48, 384, 2.0098],
    'E64 v4': [64, 504, 2.0098],
  },
  'E2s – E64s v4': {
    'E2s v4': [2, 16, 1.7768],
    'E4s v4': [4, 32, 1.7768],
    'E8s v4': [8, 64, 1.7768],
    'E16s v4': [16, 128, 1.7768],
    'E20s v4': [20, 160, 1.7768],
    'E32s v4': [32, 256, 1.7768],
    'E48s v4': [48, 384, 1.7768],
    'E64s v4': [64, 504, 1.7768],
    'E80is v4 1': [80, 504, 1.8268],
  },
  'E2-64 v3': {
    'E2 v3': [2, 16, 1.727],
    'E4 v3': [4, 32, 1.727],
    'E8 v3': [8, 64, 1.727],
    'E16 v3': [16, 128, 1.9155],
    'E20 v3': [20, 160, 1.727],
    'E32 v3': [32, 256, 1.727],
    'E48 v3': [48, 384, 1.727],
    'E64i v3 1': [64, 432, 1.727],
    'E64 v3': [64, 432, 1.727],
  },
  'E2s-64s v3': {
    'E2s v3': [2, 16, 1.777],
    'E4s v3': [4, 32, 1.777],
    'E8s v3': [8, 64, 1.777],
    'E16s v3': [16, 128, 1.7935],
    'E20s v3': [20, 160, 1.777],
    'E32s v3': [32, 256, 1.777],
    'E48s v3': [48, 384, 1.777],
    'E64is v3 1': [64, 432, 1.777],
    'E64s v3': [64, 432, 1.777],
  },
  'D11-15 v2': {
    'D11 v2': [2, 14, 1.2346],
    'D12 v2': [4, 28, 1.322],
    'D13 v2': [8, 56, 1.322],
    'D14 v2': [16, 112, 1.322],
    'D15i v2 1': [20, 140, 1.322],
    'D15 v2': [20, 140, 1.322],
  },
  'D11S-15S v2': {
    'Ds11 v2': [2, 14, 1.322],
    'Ds12 v2': [4, 28, 1.322],
    'Ds13 v2': [8, 56, 1.322],
    'Ds14 v2': [16, 112, 1.322],
    'Ds15i v2 1': [20, 140, 1.322],
    'Ds15 v2': [20, 140, 1.322],
  },
  'G-series': {
    G1: [2, 28, 1.7491],
    G2: [4, 56, 1.7491],
    G3: [8, 112, 1.7491],
    G4: [16, 224, 1.7491],
    G5: [32, 448, 1.7491],
  },
  'Gs-Series': {
    Gs1: [2, 28, 1.7491],
    Gs2: [4, 56, 1.7491],
    Gs3: [8, 112, 1.7491],
    Gs4: [16, 224, 1.7491],
    Gs5: [32, 448, 1.7491],
  },
  'M-series': {
    M8ms: [8, 219, 6.8086],
    M16ms: [16, 438, 6.5256],
    M32ts: [32, 192, 6.5256],
    M32ls: [32, 256, 6.5256],
    M32ms: [32, 875, 6.5256],
    M64ls: [64, 512, 6.5256],
    M64s: [64, 1024, 6.5256],
    'M64 1': [64, 1024, 6.5256],
    M64ms: [64, 1792, 6.5256],
    'M64m 1': [64, 1792, 6.5256],
    M128s: [128, 2048, 6.5256],
    'M128 1': [128, 2048, 4.2705],
    M128ms: [128, 3892, 6.5256],
    'M128m 1': [128, 3892, 6.5256],
  },
  'Mdsv2-series': {
    'M32dms v2': [32, 875, 6.8086],
    'M64ds v2': [64, 1024, 6.8086],
    'M64dms v2': [64, 1792, 6.8086],
    'M128ds v2': [128, 2048, 6.8086],
    'M128dms v2': [128, 3892, 6.8086],
    'M192ids v2': [192, 2048, 6.8086],
    'M192idms v2': [192, 4096, 6.8086],
  },
  'Msv2-series': {
    'M32ms v2': [32, 875, 6.7586],
    'M64s v2': [64, 1024, 16.8885],
    'M64ms v2': [64, 1792, 6.7586],
    'M128s v2': [128, 2048, 6.7586],
    'M128ms v2': [128, 3892, 6.7586],
    'M192is v2': [192, 2048, 6.7586],
    'M192ims v2': [192, 4096, 6.7586],
  },
  'Mv2-series': {
    'M208s v2': [208, 2850, 16.9385],
    'M208ms v2': [208, 5700, 16.9385],
    'M416s v2': [416, 5700, 16.9385],
    'M416ms v2': [416, 11400, 16.9385],
  },
  'SAP HANA on Azure Large Instances': {
    S96: [96, 768, 17.7706],
    S192: [192, 2048, 17.7706],
    S192m: [192, 4096, 17.7706],
    S192xm: [192, 6144, 17.7706],
    S384: [384, 4096, 17.7706],
    S384m: [384, 6144, 17.7706],
    S384xm: [384, 8192, 17.7706],
    S384xxm: [384, 12000, 17.7706],
    S576m: [576, 12000, 17.7706],
  },
  'SAP HANA on Azure Large Instances (second generation)': {
    S224: [224, 3072, 52.2545],
    S224oo: [224, 4608, 52.2545],
    S224m: [224, 6144, 52.2545],
    S224om: [224, 6144, 52.2545],
    S224ooo: [224, 7680, 52.2545],
    S224oom: [224, 9216, 52.2545],
    S448: [448, 6144, 52.2545],
    S448oo: [448, 9216, 52.2545],
    S448m: [448, 12288, 52.2545],
    S448om: [448, 12288, 52.2545],
    S448ooo: [448, 15360, 52.2545],
    S448oom: [448, 18432, 52.2545],
    S672: [672, 9216, 52.2545],
    S672oo: [672, 13824, 52.2545],
    S672m: [672, 18432, 52.2545],
    S672om: [672, 18432, 52.2545],
    S672ooo: [672, 23040, 52.2545],
    S672oom: [672, 27648, 52.2545],
    S896: [896, 12288, 52.2545],
    S896oo: [896, 18432, 52.2545],
    S896m: [896, 24576, 52.2545],
    S896om: [896, 24576, 52.2545],
    S896ooo: [896, 30720, 52.2545],
    S896oom: [896, 36864, 52.2545],
  },
  'Lsv2-series': {
    'L8s v2': [8, 64, 2.0154],
    'L16s v2': [16, 128, 2.0154],
    'L32s v2': [32, 256, 2.0154],
    'L48s v2': [48, 384, 2.0154],
    'L64s v2': [64, 512, 2.0154],
    'L80s v2': [80, 640, 2.0154],
  },
  'Ls-series': {
    L4s: [4, 32, 1.5329],
    L8s: [8, 64, 1.5329],
    L16s: [16, 128, 1.5329],
    L32s: [32, 256, 1.5329],
  },
  'NC-series': {
    NC6: [6, 56, 2.0385],
    NC12: [12, 112, 2.0385],
    NC24r: [24, 224, 2.0385],
    NC24: [24, 224, 2.0385],
  },
  'NC-series Promo': {
    'NC6 Promo': [6, 56, 2.0385],
    'NC12 Promo': [12, 112, 2.0385],
    'NC24 Promo': [24, 224, 2.0385],
    'NC24r Promo': [24, 224, 2.0385],
  },
  'NCsv2-series': {
    'NC6s v2': [6, 112, 2.3491],
    'NC12s v2': [12, 224, 2.3491],
    'NC24rs v2': [24, 448, 2.3491],
    'NC24s v2': [24, 448, 2.3491],
  },
  'NCsv3-series': {
    'NC6s v3': [6, 112, 2.3491],
    'NC12s v3': [12, 224, 2.3491],
    'NC24rs v3': [24, 448, 2.3491],
    'NC24s v3': [24, 448, 2.3491],
  },
  'NCas_T4_v3 Series': {
    'NC4as T4 v3': [4, 28, 2.3491],
    'NC8as T4 v3': [8, 56, 2.3491],
    'NC16as T4 v3': [16, 112, 2.3491],
    'NC64as T4 v3': [64, 448, 2.3491],
  },
  'NP-Series': {
    NP10s: [10, 192, 2.1929],
    NP20s: [20, 384, 2.1929],
    NP40s: [40, 768, 2.1929],
  },
  'NV-series': {
    NV6: [6, 56, 2.0385],
    NV12: [12, 112, 2.0385],
    NV24: [24, 224, 2.0385],
  },
  'NVv3-series': {
    'NV12s v3': [12, 112, 2.3491],
    'NV24s v3': [24, 224, 2.3491],
    'NV48s v3': [48, 448, 2.3491],
  },
  'NDs-series': {
    ND6s: [6, 112, 2.3491],
    ND12s: [12, 224, 2.3491],
    ND24rs: [24, 448, 2.3491],
    ND24s: [24, 448, 2.3491],
  },
  'NDv2 Series': {
    'ND40rs v2': [40, 672, 3.2598],
  },
  'ND A100 v4 series': {
    'ND96asr A100 v4': [96, 900, 3.576],
  },
  'NDm A100 v4 series': {
    'ND96amsr A100 v4': [96, 1900, 4.9629],
  },
  'H-series': {
    H8: [8, 56, 1.4385],
    H8m: [8, 112, 1.4385],
    H16r: [16, 112, 1.4385],
    H16: [16, 112, 1.4385],
    H16mr: [16, 224, 1.4385],
    H16m: [16, 224, 1.4385],
  },
  'H-series promo': {
    'H8 Promo': [8, 56, 1.4385],
    'H8m Promo': [8, 112, 1.4385],
    'H16 Promo': [16, 112, 1.4385],
    'H16r Promo': [16, 112, 1.4385],
    'H16m Promo': [16, 224, 1.4385],
    'H16mr Promo': [16, 224, 1.4385],
  },
  'HBv2-series': {
    'HB120rs v2': [120, 480, 1.6935],
  },
  'HBv3-series': {
    'HB120rs v3': [120, 448, 1.6991],
  },
  'HC-series': {
    HC44rs: [44, 352, 1.616],
  },
  'HB-series': {
    HB60rs: [60, 224, 1.444],
  },
  'D2as – D96as v5': {
    'D2as v5': [2, 8, 1.5104],
    'D4as v5': [4, 16, 1.5104],
    'D8as v5': [8, 32, 1.5104],
    'D16as v5': [16, 64, 1.5104],
    'D32as v5': [32, 128, 1.5104],
    'D48as v5': [48, 192, 1.5104],
    'D64as v5': [64, 256, 1.5104],
    'D96as v5': [96, 384, 1.5104],
  },
  'D2ads – D96ads v5': {
    'D2ads v5': [2, 8, 1.6104],
    'D4ads v5': [4, 16, 1.6104],
    'D8ads v5': [8, 32, 1.6104],
    'D16ads v5': [16, 64, 1.6104],
    'D32ads v5': [32, 128, 1.6104],
    'D48ads v5': [48, 192, 1.6104],
    'D64ads v5': [64, 256, 1.6104],
    'D96ads v5': [96, 384, 1.6104],
  },
  'D2d – D96d v5': {
    'D2d v5': [2, 8, 1.6104],
    'D4d v5': [4, 16, 1.6104],
    'D8d v5': [8, 32, 1.6104],
    'D16d v5': [16, 64, 1.6104],
    'D32d v5': [32, 128, 1.6104],
    'D48d v5': [48, 192, 1.6104],
    'D64d v5': [64, 256, 1.6104],
    'D96d v5': [96, 384, 1.6104],
  },
  'D2ds – D96ds v5': {
    'D2ds v5': [2, 8, 1.6104],
    'D4ds v5': [4, 16, 1.6104],
    'D8ds v5': [8, 32, 1.6104],
    'D16ds v5': [16, 64, 1.6104],
    'D32ds v5': [32, 128, 1.6104],
    'D48ds v5': [48, 192, 1.6104],
    'D64ds v5': [64, 256, 1.6104],
    'D96ds v5': [96, 384, 1.6104],
  },
  'D2 – D96 v5': {
    'D2 v5': [2, 8, 1.5104],
    'D4 v5': [4, 16, 1.5104],
    'D8 v5': [8, 32, 1.5104],
    'D16 v5': [16, 64, 1.5104],
    'D32 v5': [32, 128, 1.5104],
    'D48 v5': [48, 192, 1.5104],
    'D64 v5': [64, 256, 1.5104],
    'D96 v5': [96, 384, 1.5104],
  },
  'D2s – D96s v5': {
    'D2s v5': [2, 8, 1.5104],
    'D4s v5': [4, 16, 1.5104],
    'D8s v5': [8, 32, 1.5104],
    'D16s v5': [16, 64, 1.5104],
    'D32s v5': [32, 128, 1.5104],
    'D48s v5': [48, 192, 1.5104],
    'D64s v5': [64, 256, 1.5104],
    'D96s v5': [96, 384, 1.5104],
  },
  'FX-series': {
    FX4mds: [4, 84, 1.2],
    FX12mds: [12, 252, 1.2],
    FX24mds: [24, 504, 1.2],
    FX36mds: [36, 756, 1.2],
    FX48mds: [48, 1008, 1.2],
  },
  'E2as – E96as v5': {
    'E2as v5': [2, 16, 1.9098],
    'E4as v5': [4, 32, 1.9098],
    'E8as v5': [8, 64, 1.9098],
    'E16as v5': [16, 128, 1.9098],
    'E20as v5': [20, 160, 1.9098],
    'E32as v5': [32, 256, 1.9098],
    'E48as v5': [48, 384, 1.9098],
    'E64as v5': [64, 512, 1.9098],
    'E96as v5': [96, 672, 1.9098],
  },
  'E2ads – E96ads v5': {
    'E2ads v5': [2, 16, 2.0098],
    'E4ads v5': [4, 32, 2.0098],
    'E8ads v5': [8, 64, 2.0098],
    'E16ads v5': [16, 128, 2.0098],
    'E20ads v5': [20, 160, 2.0098],
    'E32ads v5': [32, 256, 2.0098],
    'E48ads v5': [48, 384, 2.0098],
    'E64ads v5': [64, 512, 2.0098],
    'E96ads v5': [96, 672, 2.0098],
  },
  'E2d – E104d v5': {
    'E2d v5': [2, 16, 2.0098],
    'E4d v5': [4, 32, 2.0098],
    'E8d v5': [8, 64, 2.0098],
    'E16d v5': [16, 128, 2.0098],
    'E20d v5': [20, 160, 2.0098],
    'E32d v5': [32, 256, 2.0098],
    'E48d v5': [48, 384, 2.0098],
    'E64d v5': [64, 512, 2.0098],
    'E96d v5': [96, 672, 2.0098],
    'E104id v5': [104, 672, 2.0098],
  },
  'E2ds – E104ds v5': {
    'E2ds v5': [2, 16, 2.0098],
    'E4ds v5': [4, 32, 2.0098],
    'E8ds v5': [8, 64, 2.0098],
    'E16ds v5': [16, 128, 2.0098],
    'E20ds v5': [20, 160, 2.0098],
    'E32ds v5': [32, 256, 2.0098],
    'E48ds v5': [48, 384, 2.0098],
    'E64ds v5': [64, 512, 2.0098],
    'E96ds v5': [96, 672, 2.0098],
    'E104ids v5': [104, 672, 2.0098],
  },
  'E2 – E104 v5': {
    'E2 v5': [2, 16, 1.9098],
    'E4 v5': [4, 32, 1.9098],
    'E8 v5': [8, 64, 1.9098],
    'E16 v5': [16, 128, 1.9098],
    'E20 v5': [20, 160, 1.9098],
    'E32 v5': [32, 256, 1.9098],
    'E48 v5': [48, 384, 1.9098],
    'E64 v5': [64, 512, 1.9098],
    'E96 v5': [96, 672, 1.9098],
    'E104i v5': [104, 672, 1.9098],
  },
  'E2s – E104s v5': {
    'E2s v5': [2, 16, 1.9098],
    'E4s v5': [4, 32, 1.9098],
    'E8s v5': [8, 64, 1.9098],
    'E16s v5': [16, 128, 1.9098],
    'E20s v5': [20, 160, 1.9098],
    'E32s v5': [32, 256, 1.9098],
    'E48s v5': [48, 384, 1.9098],
    'E64s v5': [64, 512, 1.9098],
    'E96s v5': [96, 672, 1.9098],
    'E104is v5': [104, 672, 1.9098],
  },
  'E2bds – E64bds v5': {
    'E2bds v5': [2, 16, 1.7879],
    'E4bds v5': [4, 32, 1.7879],
    'E8bds v5': [8, 64, 1.7879],
    'E16bds v5': [16, 128, 1.7879],
    'E32bds v5': [32, 256, 1.7879],
    'E48bds v5': [48, 384, 1.7879],
    'E64bds v5': [64, 512, 1.7879],
  },
  'E2bs – E64bs v5': {
    'E2bs v5': [2, 16, 2.1983],
    'E4bs v5': [4, 32, 2.1983],
    'E8bs v5': [8, 64, 2.1983],
    'E16bs v5': [16, 128, 2.1983],
    'E32bs v5': [32, 256, 2.1983],
    'E48bs v5': [48, 384, 2.1983],
    'E64bs v5': [64, 512, 2.1983],
  },
  'NC A100 v4 series': {
    'NC24ads A100 v4': [24, 220, 2.2483],
    'NC48ads A100 v4': [48, 440, 2.2483],
    'NC96ads A100 v4': [96, 880, 2.2483],
  },
}

export const VIRTUAL_MACHINE_TYPE_VCPU_MEMORY_MAPPING: {
  [instanceType: string]: number[] // [vcpus, memory]
} = {
  'vCPU Duration': [1],
  vCore: [1],
  '2 vCore': [2],
  D1: [1, 3.5],
  D2: [2, 7],
  D3: [4, 14],
  D4: [8, 28],
  // Basic Service Plan
  B1: [1, 1.75],
  B2: [2, 3.5],
  B3: [4, 7],
  // Standard Service Plan
  S1: [1, 1.75],
  S2: [2, 3.5],
  S3: [4, 7],
  // Premium v2 Service Plan
  'P1 v2': [1, 3.5],
  'P2 v2': [2, 7],
  'P3 v2': [4, 14],
  // Premium v3 Service Plan
  'P1 v3': [2, 8],
  'P2 v3': [4, 16],
  'P3 v3': [8, 32],
  // Isolated Service Plan
  I1: [1, 3.5],
  I2: [2, 7],
  I3: [4, 14],
  // Isolated v2 Plan
  'I1 v2': [2, 8],
  'I2 v2': [4, 16],
  'I3 v2': [8, 32],
}

export const VIRTUAL_MACHINE_TYPE_CONSTRAINED_VCPU_CAPABLE_MAPPING: {
  [instanceType: string]: number[] // [vcpus, memory, Platform vCPUs(highest vCPU possible), embodied emissions]
} = {
  // Constrained vCpus Capable
  'DS11-1 v2': [1, 14, 2, 1.15],
  'DS12-1 v2': [1, 28, 4, 1.1666],
  'DS12-2 v2': [2, 28, 4, 1.1666],
  'DS13-2 v2': [2, 56, 8, 1.2055],
  'DS13-4 v2': [4, 56, 8, 1.2055],
  'DS14-4 v2': [4, 112, 16, 1.2831],
  'DS14-8 v2': [8, 112, 16, 1.2831],
  'E4-2as v4': [2, 32, 4, 1.1722],
  'E4-2ds v4': [2, 32, 4, 1.1722],
  'E4-2s v3': [2, 32, 4, 1.1722],
  'E4-2s v4': [2, 32, 4, 1.1222],
  'E8-2as v4': [2, 64, 8, 1.2166],
  'E8-2ds v4': [2, 64, 8, 1.2166],
  'E8-2s v3': [2, 64, 8, 1.2166],
  'E8-2s v4': [2, 64, 8, 1.1666],
  'E8-4as v4': [4, 64, 8, 1.2166],
  'E8-4ds v4': [4, 64, 8, 1.2166],
  'E8-4s v3': [4, 64, 8, 1.2166],
  'E8-4s v4': [4, 64, 8, 1.1666],
  'E16-4as v4': [4, 128, 16, 1.3053],
  'E16-4ds v4': [4, 128, 16, 1.3053],
  'E16-4s v3': [4, 128, 16, 1.3053],
  'E16-4s v4': [4, 128, 16, 1.2553],
  'M8-2ms': [2, 219, 8, 1.4315],
  'M8-4ms': [4, 219, 8, 1.4315],
  'Gs4-4': [4, 224, 16, 1.4385],
  'Gs4-8': [8, 224, 16, 1.4385],
  'M16-4ms': [4, 438, 16, 1.7353],
  'M16-8ms': [8, 438, 16, 1.7353],
  'E16-8as v4': [8, 128, 16, 1.3053],
  'E16-8ds v4': [8, 128, 16, 1.3053],
  'E16-8s v3': [8, 128, 16, 1.3053],
  'E16-8s v4': [8, 128, 16, 1.2553],
  'E32-8as v4': [8, 256, 32, 1.4829],
  'E32-8ds v4': [8, 256, 32, 1.4829],
  'E32-8s v3': [8, 256, 32, 1.4829],
  'E32-8s v4': [8, 256, 32, 1.4329],
  'Gs5-8': [8, 448, 32, 1.7491],
  'Gs5-16': [16, 448, 32, 1.7491],
  'M32-8ms': [8, 875, 32, 2.3413],
  'E32-16as v4': [16, 256, 32, 1.4829],
  'E32-16ds v4': [16, 256, 32, 1.4829],
  'E32-16s v3': [16, 256, 32, 1.4829],
  'E32-16s v4': [16, 256, 32, 1.4329],
  'E64-16s v3': [16, 432, 64, 1.727],
  'E64-32s v3': [32, 432, 64, 1.727],
  'HB120-16rs v3': [16, 448, 120, 1.6991],
  'HB120-32rs v3': [32, 448, 120, 1.6991],
  'HB120-64rs v3': [64, 448, 120, 1.6991],
  'HB120-96rs v3': [96, 448, 120, 1.6991],
  'E64-16ds v4': [16, 504, 64, 1.8268],
  'E64-16s v4': [16, 504, 64, 1.7768],
  'E64-16as v4': [16, 512, 64, 1.8379],
  'M32-16ms': [16, 875, 32, 2.3413],
  'M64-16ms': [16, 1750, 64, 3.5549],
  'E96-24as v4': [24, 672, 96, 2.0598],
  'E64-32ds v4': [32, 504, 64, 1.8268],
  'E64-32s v4': [32, 504, 64, 1.7768],
  'E64-32as v4': [32, 512, 64, 1.8379],
  'M64-32ms': [32, 1750, 64, 3.5549],
  'M128-32ms': [32, 3800, 128, 6.398],
  'E96-48as v4': [48, 672, 96, 2.0598],
  'M128-64ms': [64, 3800, 128, 6.398],
}

export const INSTANCE_TYPE_COMPUTE_PROCESSOR_MAPPING: {
  [series: string]: string[]
} = {
  'A1 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'A2 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'A2m v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'A4 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'A4m v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'A8 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'A8m v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B1ls: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B1s: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B1ms: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B2s: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B2ms: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B4ms: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B8ms: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B12ms: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B16ms: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  B20ms: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'D2a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D4a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D8a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D16a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D32a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D48a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D64a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D96a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D2as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D4as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D8as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D16as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D32as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D48as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D64as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D96as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'D2d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D4d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D8d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D16d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D32d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D48d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D64d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D2ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D4ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D8ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D16ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D32ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D48ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D64ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D2 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D4 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D8 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D16 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D32 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D48 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D64 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D2s v4': cascadeLakeSkylakeBroadwellHaswell,
  'D4s v4': cascadeLakeSkylakeBroadwellHaswell,
  'D8s v4': cascadeLakeSkylakeBroadwellHaswell,
  'D16s v4': cascadeLakeSkylakeBroadwellHaswell,
  'D32s v4': cascadeLakeSkylakeBroadwellHaswell,
  'D48s v4': cascadeLakeSkylakeBroadwellHaswell,
  'D64s v4': cascadeLakeSkylakeBroadwellHaswell,
  'D2 v3': cascadeLakeSkylakeBroadwellHaswell,
  'D4 v3': cascadeLakeSkylakeBroadwellHaswell,
  'D8 v3': cascadeLakeSkylakeBroadwellHaswell,
  'D16 v3': cascadeLakeSkylakeBroadwellHaswell,
  'D32 v3': cascadeLakeSkylakeBroadwellHaswell,
  'D48 v3': cascadeLakeSkylakeBroadwellHaswell,
  'D64 v3': cascadeLakeSkylakeBroadwellHaswell,
  'D2s v3': cascadeLakeSkylakeBroadwellHaswell,
  'D4s v3': cascadeLakeSkylakeBroadwellHaswell,
  'D8s v3': cascadeLakeSkylakeBroadwellHaswell,
  'D16s v3': cascadeLakeSkylakeBroadwellHaswell,
  'D32s v3': cascadeLakeSkylakeBroadwellHaswell,
  'D48s v3': cascadeLakeSkylakeBroadwellHaswell,
  'D64s v3': cascadeLakeSkylakeBroadwellHaswell,
  'D1 v2': cascadeLakeSkylakeBroadwellHaswell,
  'D2 v2': cascadeLakeSkylakeBroadwellHaswell,
  'D3 v2': cascadeLakeSkylakeBroadwellHaswell,
  'D4 v2': cascadeLakeSkylakeBroadwellHaswell,
  'D5 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds1 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds2 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds3 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds4 v2': cascadeLakeSkylakeBroadwellHaswell,
  'DsS5 v2': cascadeLakeSkylakeBroadwellHaswell,
  DC2s: [COMPUTE_PROCESSOR_TYPES.COFFEE_LAKE],
  DC4s: [COMPUTE_PROCESSOR_TYPES.COFFEE_LAKE],
  'DC1s v2': [COMPUTE_PROCESSOR_TYPES.COFFEE_LAKE],
  'DC2s v2': [COMPUTE_PROCESSOR_TYPES.COFFEE_LAKE],
  'DC4s v2': [COMPUTE_PROCESSOR_TYPES.COFFEE_LAKE],
  'DC8 v2': [COMPUTE_PROCESSOR_TYPES.COFFEE_LAKE],
  'F2s v2': cascadeLakeSkylake,
  'F4s v2': cascadeLakeSkylake,
  'F8s v2': cascadeLakeSkylake,
  'F16s v2': cascadeLakeSkylake,
  'F32s v2': cascadeLakeSkylake,
  'F48s v2': cascadeLakeSkylake,
  'F64s v2': cascadeLakeSkylake,
  'F72s v2': cascadeLakeSkylake,
  F1: cascadeLakeSkylakeBroadwellHaswell,
  F2: cascadeLakeSkylakeBroadwellHaswell,
  F4: cascadeLakeSkylakeBroadwellHaswell,
  F8: cascadeLakeSkylakeBroadwellHaswell,
  F16: cascadeLakeSkylakeBroadwellHaswell,
  F1s: cascadeLakeSkylakeBroadwellHaswell,
  F2s: cascadeLakeSkylakeBroadwellHaswell,
  F4s: cascadeLakeSkylakeBroadwellHaswell,
  F8s: cascadeLakeSkylakeBroadwellHaswell,
  F16s: cascadeLakeSkylakeBroadwellHaswell,
  'E2a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E4a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E8a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E16a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E20a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E32a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E48a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E64a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E96a v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E2as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E4as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E8as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E16as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E20as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E32as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E48as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E64as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E96as v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'E2d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E4d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E8d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E16d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E20d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E32d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E48d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E64d v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E2ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E4ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E8ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E16ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E20ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E32ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E48ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E64ds v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E80ids v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E2 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E4 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E8 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E16 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E32 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E48 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E64 v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E2s v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E4s v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E8s v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E16s v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E20s v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E32s v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E48s v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E64s v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E80is v4': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E2 v3': cascadeLakeSkylakeBroadwell,
  'E4 v3': cascadeLakeSkylakeBroadwell,
  'E8 v3': cascadeLakeSkylakeBroadwell,
  'E16 v3': cascadeLakeSkylakeBroadwell,
  'E20 v3': cascadeLakeSkylakeBroadwell,
  'E32 v3': cascadeLakeSkylakeBroadwell,
  'E48 v3': cascadeLakeSkylakeBroadwell,
  'E64i v3': cascadeLakeSkylakeBroadwell,
  'E64 v3': cascadeLakeSkylakeBroadwell,
  'E2s v3': cascadeLakeSkylakeBroadwell,
  'E4s v3': cascadeLakeSkylakeBroadwell,
  'E8s v3': cascadeLakeSkylakeBroadwell,
  'E16s v3': cascadeLakeSkylakeBroadwell,
  'E20s v3': cascadeLakeSkylakeBroadwell,
  'E32s v3': cascadeLakeSkylakeBroadwell,
  'E48s v3': cascadeLakeSkylakeBroadwell,
  'E64is v3': cascadeLakeSkylakeBroadwell,
  'E64s v3': cascadeLakeSkylakeBroadwell,
  'D11 v2': cascadeLakeSkylakeBroadwellHaswell,
  'D12 v2': cascadeLakeSkylakeBroadwellHaswell,
  'D13 v2': cascadeLakeSkylakeBroadwellHaswell,
  'D14 v2': cascadeLakeSkylakeBroadwellHaswell,
  'D15i v2': cascadeLakeSkylakeBroadwellHaswell,
  'D15 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds11 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds12 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds13 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds14 v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds15i v2': cascadeLakeSkylakeBroadwellHaswell,
  'Ds15 v2': cascadeLakeSkylakeBroadwellHaswell,
  G1: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  G2: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  G3: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  G4: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  G5: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  Gs1: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  Gs2: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  Gs3: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  Gs4: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  Gs5: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  M8ms: cascadeLakeHaswell,
  M16ms: cascadeLakeHaswell,
  M32ts: cascadeLakeHaswell,
  M32ls: cascadeLakeHaswell,
  M32ms: cascadeLakeHaswell,
  M64ls: cascadeLakeHaswell,
  M64s: cascadeLakeHaswell,
  M64: cascadeLakeHaswell,
  M64ms: cascadeLakeHaswell,
  M64m: cascadeLakeHaswell,
  M128s: cascadeLakeHaswell,
  M128: cascadeLakeHaswell,
  M128ms: cascadeLakeHaswell,
  M128m: cascadeLakeHaswell,
  'M32dms v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M64ds v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M64dms v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M128ds v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M128dms v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M192ids v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M192idms v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M32ms v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M64s v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M64ms v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M128s v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M128ms v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M192is v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M192ims v2': [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'M208s v2': [COMPUTE_PROCESSOR_TYPES.SKYLAKE],
  'M208ms v2': [COMPUTE_PROCESSOR_TYPES.SKYLAKE],
  'M416s v2': [COMPUTE_PROCESSOR_TYPES.SKYLAKE],
  'M416ms v2': [COMPUTE_PROCESSOR_TYPES.SKYLAKE],
  'DS11-1 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'DS12-1 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'DS12-2 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E4-2as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E4-2ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E4-2s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E4-2s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'DS13-2 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E8-2as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E8-2ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E8-2s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E8-2s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M8-2ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'DS13-4 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E8-4as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E8-4ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E8-4s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E8-4s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'DS14-4 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E16-4as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E16-4ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E16-4s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E16-4s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M8-4ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'Gs4-4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M16-4ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'DS14-8 v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E16-8as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E16-8ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E16-8s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E16-8s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'Gs4-8': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E32-8as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E32-8ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E32-8s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E32-8s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M16-8ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'Gs5-8': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M32-8ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E32-16as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E32-16ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E32-16s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E32-16s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E64-16s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'Gs5-16': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E64-16ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E64-16s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E64-16as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M32-16ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M64-16ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E96-24as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E64-32s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E64-32ds v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E64-32s v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E64-32as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M64-32ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M128-32ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'E96-48as v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'M128-64ms': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'L8s v2': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN],
  'L16s v2': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN],
  'L32s v2': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN],
  'L48s v2': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN],
  'L64s v2': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN],
  'L80s v2': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN],
  L4s: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  L8s: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  L16s: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  L32s: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  NC6: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  NC12: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  NC24r: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  NC24: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC6 Promo': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC12 Promo': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC24 Promo': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC24r Promo': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC6s v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC12s v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC24rs v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC24s v2': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC6s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC12s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC24rs v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC24s v3': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NC4as T4 v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'NC8as T4 v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'NC16as T4 v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'NC64as T4 v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  NP10s: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  NP20s: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  NP40s: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  NV6: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  NV12: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  NV24: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'NV12s v3': [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  'NV24s v3': [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  'NV48s v3': [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  ND6s: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  ND12s: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  ND24rs: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  ND24s: [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'ND40rs v2': [COMPUTE_PROCESSOR_TYPES.SKYLAKE],
  'ND96asr A100 v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  'ND96amsr A100 v4': [COMPUTE_PROCESSOR_TYPES.UNKNOWN],
  H8: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  H8m: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  H16r: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  H16: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  H16mr: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  H16m: [COMPUTE_PROCESSOR_TYPES.HASWELL],
  'H8 Promo': [COMPUTE_PROCESSOR_TYPES.HASWELL],
  'H8m Promo': [COMPUTE_PROCESSOR_TYPES.HASWELL],
  'H16 Promo': [COMPUTE_PROCESSOR_TYPES.HASWELL],
  'H16r Promo': [COMPUTE_PROCESSOR_TYPES.HASWELL],
  'H16m Promo': [COMPUTE_PROCESSOR_TYPES.HASWELL],
  'H16mr Promo': [COMPUTE_PROCESSOR_TYPES.HASWELL],
  HB60rs: [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN],
  'HB120rs v2': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN],
  'HB120rs v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'HB120-16rs v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'HB120-32rs v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'HB120-64rs v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'HB120-96rs v3': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  HC44rs: [COMPUTE_PROCESSOR_TYPES.SKYLAKE],
  S96: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S192: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S192m: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S192xm: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S384: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S384m: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S384xm: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S384xxm: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S576m: [COMPUTE_PROCESSOR_TYPES.BROADWELL],
  S224: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S224oo: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S224m: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S224om: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S224ooo: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S224oom: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S448: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S448oo: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S448m: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S448om: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S448ooo: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S448oom: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S672: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S672oo: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S672m: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S672om: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S672ooo: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S672oom: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S896: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S896oo: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S896m: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S896om: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S896ooo: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  S896oom: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'D2as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D4as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D8as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D16as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D32as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D48as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D64as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D96as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D2ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D4ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D8ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D16ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D32ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D48ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D64ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D96ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'D2d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D4d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D8d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D16d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D32d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D48d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D64d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D96d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D2ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D4ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D8ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D16ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D32ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D48ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D64ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D96ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D2 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D4 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D8 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D16 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D32 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D48 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D64 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D96 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D2s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D4s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D8s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D16s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D32s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D48s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D64s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'D96s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  FX4mds: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  FX12mds: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  FX24mds: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  FX36mds: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  FX48mds: [COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE],
  'E2as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E4as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E8as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E16as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E20as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E32as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E48as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E64as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E96as v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E2ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E4ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E8ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E16ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E20ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E32ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E48ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E64ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E96ads v5': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'E2d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E4d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E8d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E16d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E20d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E32d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E48d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E64d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E96d v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E104id v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E2ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E4ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E8ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E16ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E20ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E32ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E48ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E64ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E96ds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E104ids v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E2 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E4 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E8 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E16 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E20 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E32 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E48 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E64 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E96 v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E104i v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E2s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E4s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E8s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E16s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E20s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E32s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E48s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E64s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E96s v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E104is v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E2bds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E4bds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E8bds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E16bds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E32bds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E48bds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E64bds v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E2bs v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E4bs v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E8bs v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E16bs v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E32bs v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E48bs v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'E64bs v5': [COMPUTE_PROCESSOR_TYPES.ICELAKE],
  'NC24ads A100 v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'NC48ads A100 v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
  'NC96ads A100 v4': [COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN],
}

export const GPU_VIRTUAL_MACHINE_TYPES: {
  [instanceType: string]: number // number of GPUs per instance
} = {
  NC6: 1,
  NC12: 2,
  NC24r: 4,
  NC24: 4,
  'NC6s v2': 1,
  'NC12s v2': 2,
  'NC24rs v2': 4,
  'NC24s v2': 4,
  'NC6s v3': 1,
  'NC12s v3': 2,
  'NC24rs v3': 4,
  'NC24s v3': 4,
  'NC4as T4 v3': 1,
  'NC8as T4 v3': 1,
  'NC16as T4 v3': 1,
  'NC64as T4 v3': 4,
  NP10s: 1,
  NP20s: 2,
  NP40s: 4,
  NV6: 1,
  NV12: 2,
  NV24: 4,
  'NV12s v3': 1,
  'NV24s v3': 2,
  'NV48s v3': 4,
  ND6s: 1,
  ND12s: 2,
  ND24rs: 4,
  ND24s: 4,
  'ND40rs v2': 8,
  'ND96asr A100 v4': 8,
  'ND96amsr A100 v4': 8,
}

export const GPU_VIRTUAL_MACHINE_TYPE_PROCESSOR_MAPPING: {
  [series: string]: string[]
} = {
  NC6: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_K80],
  NC12: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_K80],
  NC24r: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_K80],
  NC24: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_K80],
  'NC6s v2': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P100],
  'NC12s v2': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P100],
  'NC24rs v2': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P100],
  'NC24s v2': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P100],
  'NC6s v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100],
  'NC12s v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100],
  'NC24rs v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100],
  'NC24s v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100],
  'NC4as T4 v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_T4],
  'NC8as T4 v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_T4],
  'NC16as T4 v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_T4],
  'NC64as T4 v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_T4],
  NP10s: [COMPUTE_PROCESSOR_TYPES.XILINX_ALVEO_U250],
  NP20s: [COMPUTE_PROCESSOR_TYPES.XILINX_ALVEO_U250],
  NP40s: [COMPUTE_PROCESSOR_TYPES.XILINX_ALVEO_U250],
  NV6: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_M60],
  NV12: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_M60],
  NV24: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_M60],
  'NV12s v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_M60],
  'NV24s v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_M60],
  'NV48s v3': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_M60],
  ND6s: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P40],
  ND12s: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P40],
  ND24rs: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P40],
  ND24s: [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P40],
  'ND40rs v2': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100],
  'ND96asr A100 v4': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_A100],
  'ND96amsr A100 v4': [COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_A100],
}
